import vue from 'vue'
import VueRouter from 'vue-router'
vue.use(VueRouter);
import login from '../page/login/login.vue'
import home from '../components/home.vue'
import recommed from '../page/rights/recommed.vue'
import gedan from '../page/rights/gedan.vue'
import rank from '../page/rights/rank.vue'
import songs from '../page/rights/songs.vue'
import newmv from '../page/rights/newmv.vue'
import newmusic from '../page/rights/newmusic.vue'
import gedantwo from '../page/second/gedantwo.vue'
import songstwo from '../page/second/songstwo.vue'
export default new VueRouter({
  routes: [

    {
      path: '/',
      redirect: '/login'
    },
    {
      path: '/login',
      component: login
    },
    {
      path: '/home',
      component: home,
      redirect: '/recommed',
      children: [
        {
          path: '/recommed',
          component: recommed
        },
        {
          path: '/gedan',
          component: gedan
        },
        {
          path: '/rank',
          component: rank
        },
        {
          path: '/songs',
          component: songs
        }, 
        {
          path: '/newmv',
          component: newmv
        },
        {
          path: '/newmusic',
          component: newmusic
        },
        {  
            path:'/gedantwo',
            component:gedantwo
        },
        {  
          path:`/songstwo/:id`,
          name:'songstwo',
          component:songstwo
      }
      ]
    }

  ],


  //滚动行为设置
  scrollBehavior(to, from, savedPosition) {
    return { x: 0, y: 0 }
  }
});
let originPush = VueRouter.prototype.push;
let originReplace = VueRouter.prototype.replace;
//重写VueRouter.prototype身上的push方法了
VueRouter.prototype.push = function (location, resolve, reject) {
  //第一个形参：路由跳转的配置对象（query|params）
  //第二个参数：undefined|箭头函数（成功的回调）
  //第三个参数:undefined|箭头函数（失败的回调）
  if (resolve && reject) {
    //push方法传递第二个参数|第三个参数（箭头函数）
    //originPush：利用call修改上下文，变为(路由组件.$router)这个对象，第二参数：配置对象、第三、第四个参数：成功和失败回调函数
    originPush.call(this, location, resolve, reject);
  } else {
    //push方法没有产地第二个参数|第三个参数
    originPush.call(
      this,
      location,
      () => { },
      () => { }
    );
  }
};
//重写VueRouter.prototype身上的replace方法了
VueRouter.prototype.replace = function (location, resolve, reject) {
  if (resolve && reject) {
    originReplace.call(this, location, resolve, reject);
  } else {
    originReplace.call(
      this,
      location,
      () => { },
      () => { }
    );
  }
};